This invention relates to utilization of electronic memory, and more particularly to automating the sharing of a physical memory by several functional circuits, each of which may have its own memory needs that may be asserted in parallel.
Programmable logic integrated circuit devices (“PLDs”) typically have many regions of programmable logic that are interconnectable in any of many possible ways by programmable interconnection resources. PLDs also typically include input/output resources that are used via the programmable interconnection resources. It has also become quite common to include blocks of memory on PLDs. The PLD may use such memory as random access memory (“RAM”), read-only memory (“ROM”), or other types of memory. For example, with suitable additional control circuitry, such memory may be used as first-in/first-out (“FIFO”) memory. The additional control circuitry may be implemented in the programmable logic of the PLD.
Because of the extremely large logic capabilities of many PLDs, such PLDs are often used to perform multiple functions simultaneously, or at least partly or substantially simultaneously. Each of these functions may have its own requirements for supporting memory. Because the PLD is typically a generic device that is intended to satisfy many possible uses, the details of which are not known in advance by the PLD manufacturer, it is difficult to provide PLDs with memory blocks in the numbers and sizes that will meet the memory needs of the many functions that the PLD user may want to have the PLD perform. Also, for reasons of economy, there is interest in providing relatively large blocks of memory on PLDs, rather than providing many relatively small memory blocks. However, when this is done, the user may be burdened with the task of figuring how to have several functions share one large memory.
Although up to this point this background has been provided in the context of memory on PLDs, it will be understood that the same problem may arise in other contexts such as PLDs using external memory, application-specific integrated circuits (“ASICs”) using on-board or external memory, systems of multiple integrated circuits or other components sharing memory, etc. This invention can be used to help solve the problem of sharing physical memory in any of the various contexts in which it may arise. For simplicity and convenience herein, the invention will be illustratively described, for the most part, in its application to PLDs with on-board memory. But from this description, those skilled in the art will fully understand how the invention can be applied in many other contexts.